<?php
//   +----------------------------------------------------------------------
//   | Copyright (c) 2015-2025 http://www.hdphp.cn All rights reserved.
//   | Licensed ( http://www.hdphp.cn/licenses/ )
//   | Author: Jack <sophia2152@qq.com>
//   | 官方网址: http://www.hdphp.cn
//   | 这不是一个自由软件！您只能在不用于商业目的的前提下对程序代码进行修改和使用。
//   | 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
//   +----------------------------------------------------------------------
namespace app\services\system\config;

use app\services\BaseServices;
use app\dao\system\config\SystemConfigDao;

/**
 * Class：系统配置服务
 * 创建人：Jack
 * 创建时间：2023/7/28 17:41
 * @package app\services\system\config
 * @mixin SystemConfigDao
 */
class SystemConfigServices extends BaseServices
{

    /**
     * SystemConfigServices constructor.
     * @param SystemConfigDao $dao
     */
    public function __construct(SystemConfigDao $dao)
    {
        $this->dao = $dao;
    }

    /**
     * 注释：获取配置并分页
     * 创建人：Jack
     * 创建时间：2023/8/24 10:29
     * @param array $where
     * @return array
     */
    public function getConfigList(array $where)
    {
        [$page, $limit] = $this->getPageValue();
        $list = $this->dao->getConfigList($where, $page, $limit);
        $count = $this->dao->count($where);
        foreach ($list as &$item) {
            $item['value'] = $item['value'] ? json_decode($item['value'], true) ?: '' : '';


        }
        return compact('count', 'list');
    }

    /**
     * 注释：获取单个系统配置
     * 创建人：Jack
     * 创建时间：2023/8/24 14:39
     * @param string $configName
     * @param        $default
     * @return mixed|null
     */
    public function getConfigValue(string $configName, $default = null)
    {
        $value = $this->dao->getConfigValue($configName);
        return is_null($value) ? $default : json_decode($value, true);
    }

    /**
     * 注释：获取全部配置
     * 创建人：Jack
     * 创建时间：2023/8/24 14:48
     * @param array $configName
     * @return array
     */
    public function getConfigAll(array $configName = [])
    {
        return array_map(function ($item) {
            return json_decode($item, true);
        }, $this->dao->getConfigAll($configName));
    }

    /**
     * 注释：获取缩略图配置
     * 创建人：Jack
     * 创建时间：2023/12/18 8:56
     * @return array
     */
    public function getImageConfig()
    {
        return $this->getConfigAllField([
            'image_watermark_status', 'thumb_big_width', 'thumb_big_height', 'thumb_mid_width',
            'thumb_mid_height', 'thumb_small_width', 'thumb_small_height', 'watermark_type',
            'watermark_text', 'watermark_text_angle', 'watermark_text_color', 'watermark_text_size',
            'watermark_position', 'watermark_image', 'watermark_opacity', 'watermark_rotate',
            'watermark_x', 'watermark_y', 'upload_type'
        ]);
    }


    /**
     * 注释：获取全部配置
     * 创建人：Jack
     * 创建时间：2023/11/30 16:29
     * @param array $configName
     * @param int   $storeId
     * @param int   $type 0 正常结构 1：只返回key value
     * @return array
     */
    public function getConfigAllField(array $configName = [], int $storeId = 0, int $type = 0)
    {
        $list = $this->dao->getConfigAllField($configName, $storeId, ['title', 'type', 'value', 'remarks']);
        foreach ($list as &$item) {
            $item['value'] = json_decode($item['value'], true);
        }
        $value = [];
        foreach ($configName as $key) {
            if ($type) {
                $value[$key] = $list[$key]['value'] ?? '';
            } else {
                $value[$key] = $list[$key] ?? ['title' => '', 'type' => 'text', 'value' => '', 'remarks' => ''];
            }
        }
        return $value;
    }

}
